package main

import "fmt"

// 自定义错误类型

type TestError struct {
	x int
}

func (e *TestError) Error() string {
	return fmt.Sprintf("test: %d", e.x)
}

var ErrZero = &TestError{0} // 指针！（以便判断是否同一对象）

func main() {
	var e error = ErrZero
	fmt.Println(e == ErrZero) // true

	if t, ok := e.(*TestError); ok {
		fmt.Println(t.x)
	}

}
